DB2 এবং অন্যান্য রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেমে, Index ব্যবহৃত হয় ডেটাবেস টেবিলের ডেটা দ্রুত অনুসন্ধান এবং অ্যাক্সেস করার জন্য। একটি ইনডেক্স ডেটার একটি বিশেষ সাজানো কাঠামো তৈরি করে, যা ডেটাবেসে দ্রুত সন্নিবেশ, অনুসন্ধান এবং আপডেটের অপারেশন সম্পাদন করতে সাহায্য করে। ইনডেক্স দুটি প্রধান ধরণের হয়ে থাকে: Clustered Index এবং Non-clustered Index।
Clustered Index
Clustered Index হল একটি ইনডেক্স যেটি টেবিলের ডেটাকে শারীরিকভাবে সাজিয়ে রাখে। এটি ডেটাবেস টেবিলের রেকর্ডগুলির ভেতরে একটি নির্দিষ্ট শ্রেণীবদ্ধ কাঠামো তৈরি করে, যা অনুসন্ধানকে দ্রুততর করে তোলে।
বৈশিষ্ট্য:
- শারীরিক সাজানো: ক্লাস্টারড ইনডেক্স টেবিলের রেকর্ডগুলিকে ইনডেক্স ফিল্ডের ভিত্তিতে শারীরিকভাবে সাজিয়ে রাখে। এতে ডেটা রেকর্ডগুলি ইনডেক্সে রাখা ডেটার আদেশে সাজানো থাকে।
- প্রতিটি টেবিলে একটি ক্লাস্টারড ইনডেক্স: একটি টেবিলের জন্য কেবলমাত্র একটিই ক্লাস্টারড ইনডেক্স থাকতে পারে, কারণ টেবিলের ডেটা এক ধরনের সাজানো অবস্থায় থাকতে হয়।
- ফাস্ট ডেটা রিট্রিভাল: যখন আপনি ক্লাস্টারড ইনডেক্সের উপর অনুসন্ধান করেন, তখন এটি ডেটার শারীরিক অবস্থান ব্যবহার করে দ্রুত ফলাফল দেয়।
উদাহরণ:
Clustered Index তৈরি করা:
CREATE CLUSTERED INDEX idx_employee_id ON employees(employee_id);
ব্যবহার:
- Range Queries: ক্লাস্টারড ইনডেক্স মূলত range queries (যেমন BETWEEN, >=, <=) তে উপকারী, কারণ এটি ডেটা শারীরিকভাবে সাজিয়ে রাখে।
- ফাস্ট রিট্রিভাল: যখন টেবিলের ডেটা বড় এবং জটিল হয়, তখন এটি দ্রুত ডেটা রিট্রিভাল নিশ্চিত করে।
Non-clustered Index
Non-clustered Index একটি পৃথক ইনডেক্স যা টেবিলের ডেটা থেকে আলাদা একটি কাঠামো তৈরি করে। এই ইনডেক্স ডেটাবেসে একটি পৃথক ডেটাবেস অবজেক্ট হিসেবে থাকে, যা মূল টেবিলের রেকর্ড থেকে পৃথক থাকে।
বৈশিষ্ট্য:
- পৃথক কাঠামো: নন-ক্লাস্টারড ইনডেক্সে মূল টেবিলের রেকর্ডের একটি আলাদা কাঠামো তৈরি হয়। এই ইনডেক্সে ডেটার ঠিকানা থাকে, এবং ডেটার অবস্থান আলাদাভাবে নির্ধারণ করা হয়।
- একাধিক Non-clustered Index: একটি টেবিলের একাধিক নন-ক্লাস্টারড ইনডেক্স থাকতে পারে, কারণ এটি শারীরিকভাবে টেবিলের ডেটাকে সাজায় না।
- ডেটার অবস্থান উল্লেখ: নন-ক্লাস্টারড ইনডেক্সে ডেটার অবস্থান বা রেফারেন্স থাকে, যা অনুসন্ধান পরিচালনা করতে সহায়ক।
উদাহরণ:
Non-clustered Index তৈরি করা:
CREATE NONCLUSTERED INDEX idx_employee_name ON employees(first_name, last_name);
ব্যবহার:
- Specific Column Searches: যখন নির্দিষ্ট কলামের উপর অনুসন্ধান করা হয় এবং ক্লাস্টারড ইনডেক্সের জন্য বড় রেঞ্জ নেই, তখন নন-ক্লাস্টারড ইনডেক্স ভালোভাবে কাজ করে।
- Multiple Indexes: একাধিক নন-ক্লাস্টারড ইনডেক্স থাকতে পারে, যা একাধিক কলামে দ্রুত অনুসন্ধান করতে সাহায্য করে।
Clustered এবং Non-clustered Index এর মধ্যে পার্থক্য
| বিশেষত্ব | Clustered Index | Non-clustered Index |
|---|---|---|
| ডেটা সাজানো | শারীরিকভাবে সাজানো থাকে | আলাদা কাঠামো, শারীরিক সাজানো থাকে না |
| একটি টেবিলের জন্য | একটিই থাকতে পারে | একাধিক থাকতে পারে |
| ডেটা অ্যাক্সেস | দ্রুত অ্যাক্সেস (বিশেষত রেঞ্জ কুয়েরি) | নির্দিষ্ট কলামের দ্রুত অনুসন্ধান |
| স্টোরেজ | ডেটাবেস টেবিলের সাথে সম্পর্কিত | আলাদা ইনডেক্স কাঠামো হিসেবে থাকে |
| কার্যকরী ক্ষেত্রে | রেঞ্জ কুয়েরি এবং ডেটা অ্যাক্সেস দ্রুত করা | নির্দিষ্ট কলামে দ্রুত অনুসন্ধান |
সারসংক্ষেপ
- Clustered Index: এটি টেবিলের রেকর্ডগুলি শারীরিকভাবে সাজায়, যেখানে একাধিক রেকর্ডের জন্য শুধুমাত্র একটি ইনডেক্স থাকতে পারে। এটি রেঞ্জ কুয়েরি এবং বড় ডেটাবেসের জন্য অত্যন্ত কার্যকরী।
- Non-clustered Index: এটি টেবিলের ডেটা থেকে আলাদা একটি ইনডেক্স কাঠামো তৈরি করে এবং একাধিক নন-ক্লাস্টারড ইনডেক্স থাকতে পারে। এটি নির্দিষ্ট কলামে দ্রুত অনুসন্ধান করার জন্য ব্যবহার করা হয়।
যখন ডেটাবেস ডিজাইন করা হয়, তখন কোন ইনডেক্স ব্যবহৃত হবে তা নির্ভর করে ব্যবহারকারীর ডেটার অ্যাক্সেস প্যাটার্ন এবং কুয়েরির ধরণ।
Read more